home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / TEMP / GNU / bison / TokenDecl < prev    next >
Text File  |  1995-06-28  |  2KB  |  52 lines

  1. Token Decl
  2. Previous: <Declarations=>Declaratio> * Next: <Precedence Decl=>Precedence> * Up: <Declarations=>Declaratio>
  3.  
  4. #Wrap on
  5. {fH4}Token Type Names{f}
  6.  
  7. The basic way to declare a token type name (terminal symbol) is as follows:
  8.  
  9. #Wrap off
  10. #fCode
  11. %token {fStrong}name{f}
  12. #f
  13. #Wrap on
  14.  
  15. Bison will convert this into a {fCode}\#define{f} directive in
  16. the parser, so that the function {fCode}yylex{f} (if it is in this file)
  17. can use the name {fStrong}name{f} to stand for this token type's code.
  18.  
  19. Alternatively, you can use {fCode}%left{f}, {fCode}%right{f}, or {fCode}%nonassoc{f}
  20. instead of {fCode}%token{f}, if you wish to specify precedence.
  21. \*Note <Precedence Decl=>Precedence>: Operator Precedence.
  22.  
  23. You can explicitly specify the numeric code for a token type by appending
  24. an integer value in the field immediately following the token name:
  25.  
  26. #Wrap off
  27. #fCode
  28. %token NUM 300
  29. #f
  30. #Wrap on
  31.  
  32. It is generally best, however, to let Bison choose the numeric codes for
  33. all token types.  Bison will automatically select codes that don't conflict
  34. with each other or with ASCII characters.
  35.  
  36. In the event that the stack type is a union, you must augment the
  37. {fCode}%token{f} or other token declaration to include the data type
  38. alternative delimited by angle-brackets (\*Note <Multiple Types=>MultipleTy>: More Than One Value Type).  
  39.  
  40. For example:
  41.  
  42. #Wrap off
  43. #fCode
  44. %union \{              \/\* define stack type \*\/
  45.   double val;
  46.   symrec \*tptr;
  47. \}
  48. %token <val> NUM      \/\* define token NUM and its type \*\/
  49. #f
  50. #Wrap on
  51.  
  52.